package com.starmark.gateway.auth.security.service;


import com.starmark.gateway.auth.security.dto.GatewayAuthResourceDto;
import com.starmark.gateway.auth.security.dto.SecurityUserInfo;

import java.util.List;
import java.util.Set;

/**
 * @author starmark
 * @date 20-1-23  下午9:57
 */
public interface IAuthService {

    /**
     * 查找用户的相关角色
     *
     * @param securityUser 用户对象
     * @return
     */
    Set<String> findRoleIdsByUserId(SecurityUserInfo securityUser);


    /**
     * 获取角色下授权的资源集合
     *
     * @param roleId 角色ID
     * @param projectCode 工程编码
     * @return 资源集合
     */
    List<String> findAuthResourceIdsByRoleId(String roleId,String projectCode);


    /**
     * 判断是否有匿名权限
     *
     * @param url       访问URL
     * @param projectCode 工程编码
     * @return 是否有匿名权限
     */
    boolean ignoreAuthentication(String url, String projectCode);


    /**
     * 调用签权服务，判断用户是否有权限
     *
     * @param securityUser 用户信息
     * @param url 访问URL
     * @param method 访问方法

     * @return true/false
     */
    boolean hasPermission(SecurityUserInfo securityUser, String url, String method);



    /**
     * 获取角色下授权的资源集合
     *
     * @param projectCode 工程编码
     * @return 资源集合
     */
    List<GatewayAuthResourceDto> findAuthResourcesByProjectCode(String projectCode);
}
